iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 10
0
自我挑戰組

Junior 後端工程師歷程系列 第 10

Day 10: Laravel 打造一組 API 系列 (6) - 驗證什麼的 Laravel 都幫你準備好了!

  • 分享至 

  • xImage
  •  

API 在做新增的動作時也需要驗證 json 裡面的參數是否有符合規定,還好 Laravel 都幫我們準備好了~一起來看看如何驗證輸入吧。

表單請求驗證

表單請求驗證(FormRequest)是Laravel框架提供的用戶表單數據驗證方案,此方案相比手工調用validator來說,能處理更為複雜的驗證邏輯。

創建 Request

接下來我們創建 BookRequest ,使用以下命令:

$ php artisan make:request BookRequest

執行成功後會生成以下文件:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class BookRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return false;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            //
        ];
    }
}

authorize() 方法是表單驗證自帶的另一個功能——權限驗證,這邊我們不會用到此功能,此處我們 return true; 即可。

public function authorize()
{
    return true;
}

接下来我们需要定制 rules() 方法,如下:

 /**
   * Get the validation rules that apply to the request.
   *
   * @return array
   */
public function rules()
{
    return [
        // 書名必填且為字串
        'name' => 'string',
        // 作者必填且為字串
        'author' => 'string',
        // 價錢必填且為數字
        'price' => 'numeric',
        // 出版日期必填且為日期
        'publication_date' => 'date'
    ];
}

rules() 方法内,分別設定不太一樣的驗證規則。

然後再 BookController 中 store() 方法內加入 BookRequest 如下:

public function store(BookRequest $request)
{
    Book::create($request->all());

    return response()->json(['新增書籍成功'], 200);
}

阿~~電腦有點問題!今天先到這裡囉~~之後再把內容補齊!

/images/emoticon/emoticon02.gif


上一篇
Day 09: Laravel 打造一組 API 系列 (5) - Handler 與 API 錯誤回傳的小秘密
系列文
Junior 後端工程師歷程10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
netenken1
iT邦新手 4 級 ‧ 2022-02-07 08:08:35

你好,我覺得您寫的非常清楚明白,可惜看到這邊發現沒了後續,希望未來還有機會看到續篇章,感謝再感謝

我要留言

立即登入留言